package controle;

import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;

import servicos.ProdutoRN;
import servicos.FalhaDeDeletarExcepiton;
import servicos.FalhaDeInclusaoException;
import dominio.Produto;

@ManagedBean(name = "ProdutoMB")
public class ProdutoManagedBean {

	private ProdutoRN cadastro = new ProdutoRN();
	private Produto produto = new Produto();

	private List<Produto> produtoSelecionado = new ArrayList<Produto>();

	// GET DO PRODUTO
	public Produto getProduto() {
		return produto;
	}

	// SET DO PRODUTO
	public void setProduto(Produto produto) {
		this.produto = produto;
	}

	// METODO PARA LISTAR PRODUTOS
	public List<Produto> getListarProduto() {
		try {
			return cadastro.listar();

		} catch (FalhaDeInclusaoException e) {
			e.printStackTrace();

			return null;

		}
	}

	// METODO PARA SALVAR PRODUTOS
	public String salvarProduto() {

		try {
			
			
			cadastro.salvar(produto);

			return "/paginas/produto/produto_salvo.xhtml";
		} catch (FalhaDeInclusaoException e) {
			e.printStackTrace();
		}

		return "falha";
	}

	// METODO PARA DELETAR PRODUTO
	public String deletarProduto() {
		try {

			cadastro.deletar(produto);

			return "/paginas/produto/listar_produtos.xhtml";
		} catch (FalhaDeDeletarExcepiton e) {
			e.printStackTrace();
		}
		return "Falha";
	}

	public List<Produto> getProdutoSelecionado() {
		return produtoSelecionado;
	}

	public void setProdutoSelecionado(List<Produto> produtoSelecionado) {
		this.produtoSelecionado = produtoSelecionado;
	}

	public List<Produto> completaNome(String query)

	throws FalhaDeInclusaoException {
		query = query.toUpperCase();

		this.produtoSelecionado = cadastro.listar();
		List<Produto> sugestao = new ArrayList<Produto>();
		for (Produto p : this.produtoSelecionado) {
			if (p.getCodigo().startsWith(query)) {

				sugestao.add(p);

			}

		}
		return sugestao;
	}

	public Produto buscaPorCodigo(String codigo) {

		return cadastro.buscarPoCodigo(codigo);
	}

}
